home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus Special 24 / AMIGAplus Sonderheft 24 (2000)(Falke)(DE)[!].iso / PublicDomain / Anwendungen / MT-RechnungIII / Rexx / WWKassenbon.outrexx < prev    next >
Text File  |  1999-03-01  |  6KB  |  280 lines

  1. /*
  2. ** Druck-, Vorschau, Sichern des Kassenbons mit Hilfe von WordWorth
  3. ** $VER: WWKassenbon.outrexx V1.00 (01.03.99)
  4. */
  5.  
  6. PARSE ARG ARexxPort;
  7.  
  8. ADDRESS VALUE ARexxPort;
  9. OPTIONS RESULTS;
  10.  
  11. WWVorlage    = "WWDokumente/Kassenbon.ww";
  12. WWDokument    = "t:Kassenbon.ww";
  13. WWPort        = "WORDWORTH."
  14.  
  15. LF                    = '0a'x;                            /* Zeilenvorschub                */
  16.  
  17. Gefunden = 0;
  18. DO i = 1 TO 20 WHILE(Gefunden = 0)
  19.     IF show(ports, (WWPort || i)) THEN
  20.         DO;
  21.             Gefunden = 1;
  22.             WWPort = WWPort || i;
  23.         END;
  24. END;
  25.  
  26. IF Gefunden = 0 THEN
  27.     DO;
  28.         ES_TITLE                = "Warnung";
  29.         ES_TEXTFORMAT        = "WordWorth ist nicht aktiv, bitte starten sie dieses" || LF || "und versuchen Sie es erneut";
  30.         ES_GADGETFORMAT    = "Abbrechen";
  31.         EASY_REQUEST;
  32.         EXIT;
  33.     END;
  34.  
  35. /* Original WW-Dokument nach t: kopieren, um ein versehentliches überschreiben */
  36. /* dieser Vorlage zu verhindern */
  37. GET_REXXPATH;
  38. WWVorlage        = MTR_RESULT || WWVorlage;
  39. ADDRESS COMMAND "copy" WWVorlage WWDokument;
  40.  
  41. /* Oberfläche sperren */
  42. LOCKGUI;
  43.  
  44. /* Art ermitteln: 0 = Drucken, 1 = Vorschau, 2 = Speichern */
  45. PRINTSTATE;
  46. Druckart = MTR_RESULT;
  47.  
  48. Ende_Kennzeichen = 'N';
  49.  
  50. /* Suchen der zu druckenden Daten */
  51. GET_PREFS;
  52. PRINTFIND;
  53.  
  54. /* Neues Dokument öffnen */
  55. ADDRESS VALUE WWPort;
  56. NEW;
  57. WWPort = RESULT;
  58.  
  59. DO WHILE( MTR_RESULT > 0 & Ende_Kennzeichen = 'N');
  60.  
  61.     CALL DatenAufbereiten;
  62.     SELECT;
  63.         WHEN Druckart = 0 THEN    /* Drucken    */
  64.             DO;
  65.                 ADDRESS VALUE WWPort;
  66.                 PRINT;
  67.                 ADDRESS VALUE ARexxPort;
  68.                 MTSCREENTOFRONT;
  69.             END;
  70.         WHEN Druckart = 1 THEN    /* Vorschau    */
  71.             ADDRESS VALUE ARexxPort;
  72.         WHEN Druckart = 2 THEN    /* Sichern    */
  73.             DO;
  74.                 ADDRESS VALUE WWPort;
  75.                 SAVEAS;
  76.                 ADDRESS VALUE ARexxPort;
  77.                 MTSCREENTOFRONT;
  78.             END;
  79.         OTHERWISE
  80.             DO;
  81.                 ES_TITLE                = "Warnung";
  82.                 ES_TEXTFORMAT        = "Druckart wird nicht unterstützt!";
  83.                 ES_GADGETFORMAT    = "Ok";
  84.                 EASY_REQUEST;
  85.                 Ende_Kennzeichen    = 'J';
  86.             END;
  87.     END;
  88.  
  89.     PRINTFIND;
  90. END;
  91.  
  92. /* WordWorth-Datei aus t: wieder entfernen */
  93. ADDRESS COMMAND "delete" WWDokument;
  94.  
  95. /* Oberfläche wieder entsperren */
  96. ADDRESS VALUE ARexxPort;
  97. FREEGUI;
  98.  
  99. EXIT;
  100.  
  101. DatenAufbereiten:
  102.  
  103.     ADDRESS VALUE ARexxPort;
  104.  
  105.     IF PREFS.NUMBER_DIGITS > 0 THEN
  106.         ZW_Rechnung = RIGHT( (Copies("0",PREFS.NUMBER_DIGITS) || MTR_RESULT), PREFS.NUMBER_DIGITS );
  107.     ELSE
  108.         ZW_Rechnung = MTR_RESULT;
  109.  
  110.     FORMAT_DATE_LONG date(s);
  111.     PRINTDATE = MTR_RESULT;
  112.  
  113.     FORMAT_TIME_LONG time(n);
  114.     PRINTTIME = MTR_RESULT;
  115.  
  116.     w = OB.CURRENCY_USED;
  117.     IF w < 2 THEN
  118.         FORMAT_MONEY1 OB.TOTAL_M_ALL_CH.w;
  119.     ELSE
  120.         FORMAT_MONEY2 OB.TOTAL_M_ALL_CH.w;
  121.     ZW_Betrag    = MTR_RESULT;
  122.  
  123.     IF w < 2 THEN
  124.         FORMAT_MONEY1 OB.TOTAL_M_ALL_CH.0;
  125.     ELSE
  126.         FORMAT_MONEY2 OB.TOTAL_M_ALL_CH.2;
  127.     SUM_NET        = MTR_RESULT;
  128.  
  129.     IF w < 2 THEN
  130.         FORMAT_MONEY1 OB.TOTAL_M_ALL_CH.1;
  131.     ELSE
  132.         FORMAT_MONEY2 OB.TOTAL_M_ALL_CH.3;
  133.     SUM_GROSS    = MTR_RESULT;
  134.  
  135.     IF w < 2 THEN
  136.         FORMAT_MONEY1 OB.SUM_PAYED.1;
  137.     ELSE
  138.         FORMAT_MONEY2 OB.SUM_PAYED.3;
  139.     SUMPAYED        = MTR_RESULT;
  140.  
  141.     IF w < 2 THEN
  142.         FORMAT_MONEY1 OB.SUM_BACK.1;
  143.     ELSE
  144.         FORMAT_MONEY2 OB.SUM_BACK.3;
  145.     SUMBACK        = MTR_RESULT;
  146.  
  147.  
  148.     ADDRESS VALUE WWPort;
  149.     OPEN FILENAME WWDokument FORCE;
  150.  
  151.     DruckString    = OB.OFFICE.ADDRESS.ADDRESS.2 || LF;
  152.     i = INDEX( DruckString, LF);
  153.     IF i > 0 THEN
  154.         DO;
  155.             DruckTeil    = LEFT( DruckString, (i - 1) );
  156.             DruckString = SUBSTR(DruckString, (i + 1) );
  157.             i = INDEX( DruckString, LF);
  158.         END;
  159.     ELSE
  160.         DruckTeil    = DruckString;
  161.     FIND "<OFFICE.ADDRESS.ADDRESS.2>";
  162.     TEXT DruckTeil;
  163.     DO WHILE( i > 0 );
  164.         DruckTeil    = LEFT( DruckString, (i - 1) );
  165.         DruckString = SUBSTR(DruckString, (i + 1) );
  166.         NEWPARAGRAPH;
  167.         TEXT DruckTeil;
  168.         i = INDEX( DruckString, LF);
  169.     END;
  170.  
  171.     FIND "<PRINTDATE>";
  172.     TEXT PRINTDATE;
  173.     FIND "<PRINTTIME>";
  174.     TEXT PRINTTIME;
  175.     FIND "<OB.NUMBER>";
  176.     TEXT ZW_Rechnung;
  177.     FIND "<OB.EMPLOYEE.SUR_PRENAME>";
  178.     TEXT (OB.EMPLOYEE.ADDRESS.PRENAME OB.EMPLOYEE.ADDRESS.SURNAME);
  179.  
  180.     FIND "<ARTICLE>";
  181.     BACKSPACE;
  182.  
  183.     DO i = 1 to OB.COUNT_ARTICLE;
  184.  
  185.         ADDRESS VALUE ARexxPort;
  186.  
  187.         ZW_ArtikelNr    = OB.i.POS_ARTICLE_NUMBER_FORMATED;
  188.  
  189.         FORMAT_NUMBER (OB.i.POS_QUANTITY / OB.i.POS_PRICE_UNIT) PREFS.FRAC_DIGITS;
  190.         ZW_Anzahl        = MTR_RESULT;
  191.  
  192.         ZW_Bezeichnung = OB.i.ARTICLE.DESCRIPTION;
  193.  
  194.         IF w < 2 THEN
  195.             FORMAT_MONEY1 OB.i.POS_SUM_M_ALL.w;
  196.         ELSE
  197.             FORMAT_MONEY2 OB.i.POS_SUM_M_ALL.w;
  198.         ZW_PosPreis        = MTR_RESULT;
  199.  
  200.         ADDRESS VALUE WWPort;
  201.  
  202.         TEXT ZW_ArtikelNr || "    " || ZW_Anzahl || "    " || ZW_Bezeichnung || "    " || ZW_PosPreis;
  203.  
  204.         NEWPARAGRAPH;
  205.     END;
  206.  
  207.     FIND "<SUM_NET>";
  208.     TEXT SUM_NET;
  209.  
  210.     FIND "<VALUE>";
  211.     POSITION SOL;
  212.     SHIFTDOWN;
  213.     LINE 1;
  214.     SHIFTUP;
  215.     COPY;
  216.  
  217.     j = 0;
  218.     DO i = 0 to 9;
  219.         IF OB.VALUE_M_ALL_CH.i.0 > 0 THEN
  220.             DO;
  221.                 ADDRESS VALUE ARexxPort;
  222.                 FORMAT_NUMBER OB.VALUE_PERCENT.i PREFS.FRAC_DIGITS_PERCENT;
  223.                 ZW_MWStProzentsatz    = MTR_RESULT;
  224.                 IF w < 2 THEN
  225.                     FORMAT_MONEY1 OB.VALUE_M_ALL_CH.i.0;
  226.                 ELSE
  227.                     FORMAT_MONEY2 OB.VALUE_M_ALL_CH.i.1;
  228.                 ZW_MWStBetrag            = MTR_RESULT;
  229.  
  230.                 ADDRESS VALUE WWPort;
  231.                 j = j + 1;
  232.                 IF j > 1 THEN
  233.                     DO;
  234.                         LINE 1;
  235.                         POSITION SOL;
  236.                         PASTE;
  237.                     END;
  238.                 POSITION SOV;
  239.                 FINDCHANGE FIND "<VALUEP>" CHANGE ZW_MWStProzentsatz;
  240.                 FINDCHANGE FIND "<VALUE>" CHANGE ZW_MWStBetrag;
  241.             END;
  242.     END;
  243.  
  244.     IF j = 0 THEN
  245.         DO;
  246.             POSITION SOL;
  247.             SHIFTDOWN;
  248.             LINE 1;
  249.             SHIFTUP;
  250.             BACKSPACE;
  251.         END;
  252.  
  253.     FIND "<SUM_GROSS>";
  254.     TEXT SUM_GROSS;
  255.     FIND "<SUM_PAYED>";
  256.     TEXT SUMPAYED;
  257.     FIND "<SUM_BACK>";
  258.     TEXT SUMBACK;
  259.  
  260.     FIND "<DESCRIPTION>";
  261.     BACKSPACE;
  262.     j2 = 0;
  263.     IF OB.REMARK > "" THEN
  264.         DO;
  265.             DruckString    = OB.REMARK || LF;
  266.             i2 = INDEX( DruckString, LF);
  267.             DO WHILE( i2 > 0 );
  268.                 DruckTeil    = LEFT( DruckString, (i2 - 1) );
  269.                 DruckString = SUBSTR(DruckString, (i2 + 1) );
  270.                 IF j2 > 0 THEN
  271.                     NEWPARAGRAPH;
  272.                 TEXT DruckTeil;
  273.                 i2 = INDEX( DruckString, LF);
  274.                 j2 = j2 + 1;
  275.             END;
  276.         END;
  277.  
  278. RETURN;
  279.  
  280.